/**
 * Copyright (C), 2022-2032
 */
package rewrite.common;


import java.util.ArrayList;
import java.util.List;
import lombok.Getter;

/**
 *
 *第一句风格类型枚举
 * @author zqwei
 * @date 2022/7/9 12:08
 */
@Getter
public enum StyleEnum  {

    /**
     * 1-风格
     */
    TO_BE_SET(1, "风格"),
    /**
     * 2-类型
     */
    HAS_SET(2, "类型"),
    /**
     * 3-世界观
     */
    WAITE_REVIEW(3, "世界观"),
    /**
     * 4-种类
     */
    HAS_REVIEW_NO_ERROR(4, "种类"),
    /**
     * 5-类别
     */
    HAS_REVIEW_CHANGE(5, "类别"),
    /**
     * 6-样式
     */
    FAIL_SET(6, "样式"),
    /**
     * 7-品类
     */
    FAIL_SET1(7, "品类"),
    /**
     * 8-品类
     */
    FAIL_SET2(8, "品种"),
    /**
     * 9-品类
     */
    FAIL_SET12(9, "题材"),
    /**
     * 10-品类
     */
    FAIL_SET13(10, "格局");




    /**
     * 属于已复核的状态集合
     */
    public final static Integer[] HAS_REVIEW_STATUS_ARR = {
            HAS_REVIEW_NO_ERROR.getCode(), HAS_REVIEW_CHANGE.getCode()
    };

    /**
     * 属于有效评分的状态集合
     */
    public final static Integer[] HAS_SCORE_STATUS_ARR = {
            HAS_SET.getCode(), HAS_REVIEW_NO_ERROR.getCode(), HAS_REVIEW_CHANGE.getCode()
    };

    /**
     * 状态code
     */
    private Integer code;

    /**
     * 状态描述
     */
    private String desc;

    StyleEnum(Integer code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public static StyleEnum parse(Integer code) {
        if (code == null) {
            return null;
        }
        for (StyleEnum anEnum : StyleEnum.values()) {
            if (code.equals(anEnum.code)) {
                return anEnum;
            }
        }
        return null;
    }

    /**
     * 定义枚举标签
     *
     * @return 枚举标签集合
     */

    public static List<Label> toLabelList() {
        StyleEnum[] values = values();
        List<Label> labels = new ArrayList<>(values.length);
        Label label;
        for (StyleEnum anEnum : values) {
            label = Label.builder()
                    .code(String.valueOf(anEnum.getCode()))
                    .text(anEnum.getDesc())
                    .build();
            labels.add(label);
        }
        return labels;
    }
}